home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / structAPI.prg < prev    next >
Text File  |  1997-11-20  |  10KB  |  186 lines

  1. //------------------------------------------------------------------------
  2. //
  3. //  StructAPI.prg  --  A collection of structure member functions
  4. //
  5. //  This script prototypes several functions that are contained 
  6. //  in the file StrucMem.dll. Once the functions have been 
  7. //  prototyped, you can use them as you would native dBASE 
  8. //  functions. 
  9. //
  10. //  These functions can be used to construct and/or parse 
  11. //  structure strings. Structure strings are required when
  12. //  working with many functions in external DLLs or the 
  13. //  the Windows API. To exchange a structure with an 
  14. //  external function, prototype that function with the 
  15. //  CPTR type. Then create a string variable and exchange 
  16. //  the string.
  17. //
  18. //  Functions prototyped are:
  19. //
  20. //   GetStructNumber(<string>, <offset>, <type>)
  21. //        where <string> - is a string var representing a structure
  22. //              <offset> - is the offset in the structure of the number 
  23. //                         that you want to get.
  24. //              <type>   - indicates the datatype of the member. Types 
  25. //                         are defined in the STRUCMEM.H header file.
  26. //        return value   - the number at offset <offset>
  27. //
  28. //   SetStructNumber(<string>, <offset>, <type>, <length>, <value>)
  29. //        where <string> - is a string var representing a structure
  30. //              <offset> - is the offset in the structure of the number 
  31. //                         that you want to set.
  32. //              <type>   - indicates the datatype of the member. Types 
  33. //                         are defined in the STRUCMEM.H header file.
  34. //              <length> - is the length of <string>
  35. //              <value>  - is the numeric value that you want to write 
  36. //                         to the string.                                            *
  37. //        return value   - is the number of bytes written to the string
  38. //
  39. //   GetStructString(<string>, <offset>, <length>, <target>, <target len>)
  40. //        where <string> - is a string var representing a structure
  41. //              <offset> - is the offset in the structure of the 
  42. //                         string that you want to get.                                   *
  43. //              <length> - is the number of bytes to get
  44. //              <target> - this string variable should be blank. It 
  45. //                         will be written to.
  46. //          <target len> - is the length of <target>
  47. //        return value   - is the number of bytes written to the target
  48. //
  49. //   SetStructString(<string>, <offset>, <size>, <value>, <value len>)
  50. //        where <string> - is a string var representing a structure
  51. //              <offset> - is the offset in the structure of the string 
  52. //                         that you want to set.
  53. //              <length> - is the length of the entire <string> structure.
  54. //               <value> - this is the string that is written to <string>
  55. //           <value len> - is the length of <value>
  56. //        return value   - is the number of bytes written to the string
  57. //
  58. //   GetStructStringLen(<string>, <offset> )
  59. //        where <string> - is a string var representing a structure 
  60. //                         modified by an external call.
  61. //              <offset> - is the offset in the structure of the string
  62. //                         that you want to find the lenght of.
  63. //           reurn value - is the number of bytes preceding a null byte.
  64. //
  65. //   GetStructCharPointer(<string>, <offset>, <length>, <target>, 
  66. //                        <target len>)
  67. //        where <string> - is a string var representing a structure 
  68. //              <offset> - is the offset in the structure of the string 
  69. //                         that you want to get.
  70. //              <length> - is the number of bytes pointed to. This many
  71. //                         bytes will be copied to <target>. If the
  72. //                         pointer points to a null terminated string,
  73. //                         you can use 0 as the length.
  74. //              <target> - this string variable should be blank. It will
  75. //                         be written to.
  76. //          <target len> - is the length of <target>
  77. //          return value - is the number of bytes written to the target
  78. //
  79. //   SetStructCharPointer(<string>, <offset>, <length>, <value>)
  80. //        where <string> - is a string var representing a structure
  81. //              <offset> - is the offset in the structure of the string 
  82. //                         that you want to get.
  83. //              <length> - is the length of the <string>
  84. //              <value>  - is a string. A pointer to this string is written
  85. //                         to the structure at the specified offset. Make
  86. //                         sure that the <value> variable remains in scope
  87. //                         during the entire time that you are using the
  88. //                         structure.
  89. //        return value   - is the number of bytes written to the string
  90. //
  91. //   GetStructWCharPointer(<string>, <offset>, <length>, <target>, 
  92. //                         <target len>)
  93. //        where <string> - is a string var representing a structure
  94. //              <offset> - is the offset in the structure of the string 
  95. //                         that you want to get.
  96. //              <length> - is the number of bytes pointed to. This many
  97. //                         bytes will be copied to <target>. If the
  98. //                         pointer points to a null terminated string,
  99. //                         you can use 0 as the length.
  100. //              <target> - this string variable should be blank. It will
  101. //                         be written to.
  102. //          <target len> - is the length of <target>
  103. //          return value - is the number of characters written to the target
  104. //
  105. //      The GetStructWCharPointer() function should be used when the
  106. //      pointer at <offset> points to a wide char string.
  107. //
  108. //   GetStructVoidPointer(<string>, <offset>, <length>, <target>, 
  109. //                        <target len>)
  110. //        where <string> - is a string var representing a structure 
  111. //              <offset> - is the offset in the structure of the string 
  112. //                         that you want to get.
  113. //              <length> - is the number of bytes pointed to. This many
  114. //                         bytes will be copied to <target>. Unlike the
  115. //                         GetStructCharPointer method, this one requires
  116. //                         that the length be correctly set.
  117. //              <target> - this string variable should be blank. It will
  118. //                         be written to.
  119. //          <target len> - is the length of <target>
  120. //        return value   - is the number of bytes written to the target
  121. //
  122. //   SetStructVoidPointer(<string>, <offset>, <length>, <value>)
  123. //        where <string> - is a string var representing a structure
  124. //              <offset> - is the offset in the structure of the string
  125. //                         that you want to get.
  126. //              <length> - is the length of the <string>
  127. //              <value>  - is a string. A pointer to this string is written
  128. //                         to the structure at the specified offset. Make
  129. //                         sure that the <value> variable remains in scope
  130. //                         during the entire time that you are using the
  131. //                         structure.
  132. //          return value - is the number of bytes written to the string
  133. //
  134. //   ConvertToMultiByte(<wstring>,<string>,<length>)
  135. //        where <wstring> - is a wide char string
  136. //              <string>  - is the return buffer for the multibyte string
  137. //              <length>  - is the length of the return buffer in bytes
  138. //
  139. //   ConvertToWideChar(<string>,<wstring>,<length>)
  140. //        where <string>  - is a multi-byte string
  141. //              <wstring> - is the return buffer for the wide char string
  142. //              <length>  - is the length of the return buffer in bytes 
  143. //
  144. //  Example:
  145. //    See structure.prg for examples.
  146. //
  147. //  Visual dBASE Samples Group
  148. //  $Revision:   1.6  $
  149. //
  150. //  Copyright (c) 1997, Borland International, Inc. All rights reserved.
  151. //
  152. //------------------------------------------------------------------------
  153.  
  154.    local sFolder
  155.    SET TALK OFF
  156.    sFolder = SUBSTR( PROGRAM(0), 1, ;
  157.              LEN( PROGRAM( 0 ) ) - ( LEN( PROGRAM() ) + 4) )
  158.    extern CLDOUBLE GetStructNumber(CPTR, CINT, CINT) ;
  159.      ( sFolder + "strucmem.dll" )
  160.  
  161.    extern CINT SetStructNumber(CPTR, CINT, CINT, CINT, CLDOUBLE) ;     ( sFolder + "strucmem.dll" )   extern CINT GetStructString(CPTR, CINT, CINT, CSTRING, CINT) ;
  162.      ( sFolder + "strucmem.dll" )
  163.  
  164.    extern CINT GetStructStringLen(CPTR, CINT) ;
  165.      ( sFolder + "strucmem.dll" )
  166.  
  167.    extern CINT SetStructString(CPTR, CINT, CINT, CSTRING, CINT) ;
  168.       ( sFolder + "strucmem.dll" )
  169.    extern CINT GetStructCharPointer(CPTR, CINT, CINT, CSTRING, CINT) ;
  170.       ( sFolder + "strucmem.dll" )
  171.    extern CINT SetStructCharPointer(CPTR, CINT, CINT, CSTRING) ;  
  172.       ( sFolder + "strucmem.dll" ) from "SetStructPointer"
  173.    extern CINT GetStructWCharPointer(CPTR, CINT, CINT, CPTR, CINT) ;
  174.       ( sFolder + "strucmem.dll" ) from "GetStructWCharPointer"
  175.    extern CINT GetStructVoidPointer(CPTR, CINT, CINT, CPTR, CINT) ;
  176.       ( sFolder + "strucmem.dll" ) from "GetStructCharPointer"
  177.    extern CINT SetStructVoidPointer(CPTR, CINT, CINT, CPTR) ;
  178.       ( sFolder + "strucmem.dll" ) from "SetStructPointer"
  179.    extern CINT ConvertToMultiByte(CPTR, CPTR, CINT) ;
  180.       ( sFolder + "strucmem.dll" )
  181.    extern CINT ConvertToWideChar(CPTR, CPTR, CINT) ;      ( sFolder + "strucmem.dll" )
  182.  
  183. return true
  184.  
  185.  
  186.